# Windows Win32k 内核提权漏洞 CVE-2022-21882

# 漏洞描述

CVE-2022-21882是对CVE-2021-1732漏洞的绕过,属于win32k驱动程序中的一个类型混淆漏洞。

攻击者可以在user_mode调用相关的GUI API进行内核调用,如xxxMenuWindowProc、xxxSBWndProc、xxxSwitchWndProc、xxxTooltipWndProc等,这些内核函数会触发回调xxxClientAllocWindowClassExtraBytes。攻击者可以通过hook KernelCallbackTable 中 xxxClientAllocWindowClassExtraBytes 拦截该回调,并使用 NtUserConsoleControl 方法设置 tagWNDK 对象的 ConsoleWindow 标志,从而修改窗口类型。

最终回调后,系统不检查窗口类型是否发生变化,由于类型混淆而引用了错误的数据。flag修改前后的区别在于,在设置flag之前,系统认为tagWNDK.pExtraBytes保存了一个user_mode指针;flag设置后,系统认为tagWNDK.pExtraBytes是内核桌面堆的偏移量,攻击者可以控制这个偏移量,从而导致越界R&W。

# 漏洞影响

Product CPU Architecture Version Update Tested
Windows 10 x86/x64/ARM64 1809
Windows 10 x86/x64/ARM64 1909
Windows 10 x86/x64/ARM64 20H2
Windows 10 x86/x64/ARM64 21H1
Windows 10 x86/x64/ARM64 21H2
Windows 11 x64/ARM64
Windows Server 2019
Windows Server 2022
Windows Server 20H2

# 漏洞复现

下载POC文件, 在Windows中运行

image-20220420095102270

# 漏洞POC

https://github.com/Ascotbe/Kernelhub/tree/master/CVE-2022-21882